package com.develope.tree.image;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter{
	
	private int imageWidth;
	private Activity _activity;
	private ArrayList<String> _filePaths = new ArrayList<String>();
	
	 
	 
	public ImageAdapter(Activity activity, ArrayList<String> filePaths,int imageWidth ) {
		this._activity = activity;
		this._filePaths = filePaths;
		this.imageWidth = imageWidth;
		
		
	}
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		
		return this._filePaths.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return this._filePaths.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		ImageView imageView;
        if (convertView == null) {
            imageView = new ImageView(_activity);
        } else {
            imageView = (ImageView) convertView;
        }
 
        // get screen dimensions
        Bitmap image = decodeFile(_filePaths.get(position), imageWidth, imageWidth);
 
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setLayoutParams(new GridView.LayoutParams(imageWidth, imageWidth));
        imageView.setImageBitmap(image);
 
        // image view click listener
        imageView.setOnClickListener(new OnImageClickListener(position));
 
        return imageView;
	}
	
	class OnImageClickListener implements OnClickListener {
		 
        int _postion;
 
        // constructor
        public OnImageClickListener(int position) {
            this._postion = position;
        }
 
        @Override
        public void onClick(View v) {
            // on selecting grid view image
            // launch full screen activity
            Intent i = new Intent(_activity, FullscreenViewActivity.class);
            i.putExtra("position", _postion);
            _activity.startActivity(i);
        }
 
    }
	public static Bitmap decodeFile(String filePath, int WIDTH, int HIGHT){
		try {
			
			File f = new File(filePath);
			BitmapFactory.Options o = new BitmapFactory.Options();
			o.inJustDecodeBounds = true;
			BitmapFactory.decodeStream(new FileInputStream(f), null, o);
			
			final int REQUIRED_WIDTH = WIDTH;
            final int REQUIRED_HIGHT = HIGHT;
            int scale = 1;
            while (o.outWidth / scale / 2 >= REQUIRED_WIDTH && o.outHeight / scale / 2 >= REQUIRED_HIGHT)
            	scale *=2;
            
            BitmapFactory.Options o2 = new BitmapFactory.Options();
            o2.inSampleSize = scale;
            return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
            
		}
		catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		return null;
	}

}
